package com.hongyun.tms.infra.excel;

import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.event.AnalysisEventListener;

import java.io.InputStream;

/**
 * sheetNo       默认0读取第一张sheet
 * headRowNum    默认1不读取首行，从第二行开始读取
 *
 * @author liPeng
 * @date 2024-09-07
 */
public class EasyExcelUtil {

//====================================================将excel数据同步到JAVA模型属性里===============================================================

    /**
     * 同步按模型读取
     *
     * @param inputStream   fileInputStream
     * @param excelListener 监听器，在监听器中可以处理行数据LinkedHashMap，表头数据，异常处理等
     * @param clazz         模型的类类型（excel数据会按该类型转换成对象）
     * @param sheetNo       sheet页号，从0开始
     * @param headRowNum    表头占的行数，从0开始（如果要连表头一起读出来则传0）
     */
    public static <T> void syncReadModel(InputStream inputStream, AnalysisEventListener<T> excelListener, Class<T> clazz, Integer sheetNo, Integer headRowNum) {
        EasyExcelFactory.read(inputStream, clazz, excelListener).sheet(sheetNo).headRowNumber(headRowNum).doReadSync();
    }
}
